;;;Columbia: 
;;;I don't really know why the reactor is remaining persistent in a SDI=1 mode, but the following tips might help with some of the problems.
;;;
;;;First...how to distinguish which reactor is yours in a reactor command stack.
;;;In each reactor creation method there is an argument that is normally left 'nil' by a lot of coders, because they don't know what to do with it.  Well here's a nifty idea.  The first argument in the (vlr-editor-reactor) function is a data argument.  In the Acad help files it says to use this argument to attach any LISP code to the argument.  This also means you can attach a string to the reactor object.  You can then READ that string using the (vlr-data) functions passing it an vlr-object.  Do you follow what I'm saying?  Here's an example:
;;;
;;;--- Code: ---
(setq jmm_plot_reactor (vlr-Editor-Reactor "Plot Done" '((:vlr-commandEnded . jmm:cmdEnd))))
(vl-data vl-object)
"Plot Done"

;;;--- End code ---
;;;
;;;Therefore you could loop through the editor reactor objects to find out if one of them is yours -- and pretty simply too.
;;;
;;;--- Code: ---
(foreach reactObj (vlr-reactors :VLR-Editor-Reactor)
  (if (= (vlr-data reactObj) "Plot Done")
    (setq found reactObj)
  )
)

;;;--- End code ---
;;;
;;;Second...It is very, very, VERY important to scrub any non-persistent reactors from your drawing session upon exiting a drawing.  If you don't you get unexpected results, and *gasp* AutoCAD instability.  So here's a small snippet(s) that you will definitely want to add to your code -- the reactor creation one...
;;;
;;;--- Code: ---
;; this code creates a drawing reactor that will allow AutoCAD to destroy
;; any and all reactors within a drawing when the drawing recieves a
;; beginclose event.  THIS IS VERY IMPORTANT

(if (not $$_drawing-reactor_$$)
  (setq $$_drawing-reactor_$$
    (vlr-dwg-reactor nil '( (:vlr-beginclose . Remove-Reactors) ))
  )
)

;; the following function scrubs all reactors from a drawing when called.
;; there are two arguments to this function.

(defun Remove-Reactors (calling_reactor_object data_list)
  (mapcar
    'vlr-remove-all
    '(:VLR-AcDb-reactor            :VLR-Editor-reactor
      :VLR-Linker-reactor          :VLR-Object-reactor
      :VLR-Command-Reactor         :VLR-DeepClone-Reactor
      :VLR-DocManager-Reactor      :VLR-DWG-Reactor
      :VLR-DXF-Reactor             :VLR-Editor-reactor
      :VLR-Insert-Reactor          :VLR-Linker-Reactor
      :VLR-Lisp-Reactor            :VLR-Miscellaneous-Reactor
      :VLR-Mouse-Reactor           :VLR-Object-Reactor
      :VLR-SysVar-Reactor          :VLR-Toolbar-Reactor
      :VLR-Undo-Reactor            :VLR-Wblock-Reactor
      :VLR-Window-Reactor          :VLR-XREF-Reactor
     )
  )
  (setq jmm_plot_reactor nil)
)
;;;--- End code ---
